namespace ModuleManagement
{
  class WeatherModuleImpl : public Module
  {
  public:
    WeatherModuleImpl() throw(Common::Exception);
    ~WeatherModuleImpl();

    void 
    void GetWeatherResponse(std::string& response) throw(Common::Exception);

    // Module implementation
    virtual void Start();
    virtual void Stop();

  private:
    void CreateSyncObjects() throw(Common::Exception);
    void DestroySyncObjects();
    static DWORD WINAPI ThreadFunc(LPVOID param);

    MessageStream* OutputStream;
    HANDLE Thread;
    HANDLE NewRequestEvent;
    std::string WeatherResponse;
  };
}